package com.etc.my.service;

import com.etc.my.dto.CarDeptDto;
import com.etc.my.dto.CarMessageDto;
import com.etc.my.dto.CountDto;
import com.etc.my.dto.CarMessageDto;
import com.etc.my.entity.Car;
import com.etc.my.vo.MyValue;
import com.etc.my.vo.SelectCarVo;

import java.util.List;

public interface CarService {

    List<CarMessageDto> getCarByCondition(MyValue value);

    CountDto getCarCount(MyValue value);

    CarMessageDto selectOneCarById(String car_id);

    /**
     * 查询所有车辆的信息
     * @return 封装的车辆信息的dto CarMessageDto
     */
    List<CarMessageDto> getAllCar();

    /**
     * 根据用户id查询出该用户的卖车
     * @param userId 用户id
     * @return 所卖车数对象的集合
     */
    List<CarMessageDto> getCarByUserIdOfFage(Integer userId,Integer page,Integer size);

    /**
     * 查询该用户卖车的总数
     * @param userId
     * @return
     */
    CountDto getCarCountByUserId(Integer userId);

    /**
     * 根据多个条件查询车辆
     * @param selectCarCondition 查询车辆的条件对象
     * @return 符合条件的车辆集合（CarMessageDto该对象是由Car关联Pic组成的）
     */
    List<CarMessageDto> selectCarByMuplCondition(SelectCarVo selectCarCondition,Integer page,Integer size);

    /**
     * 多条件筛选后符合条件的车辆总数
     * @param selectCarCondition 所有条件
     * @return 符合条件的车辆总数
     */
    CountDto getCarCountByMuplCondition(SelectCarVo selectCarCondition);

    /**
     * 根据汽车品牌查询当前该汽车品牌正在售卖的车系
     * @param car_brand 汽车品牌
     * @return 该品牌的汽车车系
     */
    List<CarDeptDto> getCarDeptByBrand(String car_brand);

    /**
     * 查询当前上架售卖的汽车品牌
     * @return
     */
    List<CarDeptDto> getCarBrand();


    /**
     * 根据car_id修改car_status
     * @param car_id
     * @param car_status
     * @return
     */
    boolean updateCarStatus(String car_id,String car_status);
}
